package com.ruoyi.spm.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.spm.domain.Supplier;
import com.ruoyi.spm.mapper.SpjMapper;
import com.ruoyi.spm.domain.Spj;
import com.ruoyi.spm.service.ISpjService;

/**
 * 供应关系数据管理Service业务层处理
 * 
 * @author wangxinyu
 * @date 2025-05-23
 */
@Service
public class SpjServiceImpl implements ISpjService 
{
    @Autowired
    private SpjMapper spjMapper;

    /**
     * 查询供应关系数据管理
     * 
     * @param sno 供应关系数据管理主键
     * @return 供应关系数据管理
     */
    @Override
    public Spj selectSpjBySno(String sno)
    {
        return spjMapper.selectSpjBySno(sno);
    }

    /**
     * 查询供应关系数据管理列表
     * 
     * @param spj 供应关系数据管理
     * @return 供应关系数据管理
     */
    @Override
    public List<Spj> selectSpjList(Spj spj)
    {
        return spjMapper.selectSpjList(spj);
    }

    /**
     * 新增供应关系数据管理
     * 
     * @param spj 供应关系数据管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertSpj(Spj spj)
    {
        int rows = spjMapper.insertSpj(spj);
        insertSupplier(spj);
        return rows;
    }

    /**
     * 修改供应关系数据管理
     * 
     * @param spj 供应关系数据管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateSpj(Spj spj)
    {
        spjMapper.deleteSupplierBySno(spj.getSno());
        insertSupplier(spj);
        return spjMapper.updateSpj(spj);
    }

    /**
     * 批量删除供应关系数据管理
     * 
     * @param snos 需要删除的供应关系数据管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSpjBySnos(String[] snos)
    {
        spjMapper.deleteSupplierBySnos(snos);
        return spjMapper.deleteSpjBySnos(snos);
    }

    /**
     * 删除供应关系数据管理信息
     * 
     * @param sno 供应关系数据管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteSpjBySno(String sno)
    {
        spjMapper.deleteSupplierBySno(sno);
        return spjMapper.deleteSpjBySno(sno);
    }

    /**
     * 新增供应商数据管理信息
     * 
     * @param spj 供应关系数据管理对象
     */
    public void insertSupplier(Spj spj)
    {
        List<Supplier> supplierList = spj.getSupplierList();
        String sno = spj.getSno();
        if (StringUtils.isNotNull(supplierList))
        {
            List<Supplier> list = new ArrayList<Supplier>();
            for (Supplier supplier : supplierList)
            {
                supplier.setSno(sno);
                list.add(supplier);
            }
            if (list.size() > 0)
            {
                spjMapper.batchSupplier(list);
            }
        }
    }
}
